/**
 * @file      : pwm.h
 * @brief     : Linux平台PWM驱动头文件
 * @author    : huenrong (huenrong1028@gmail.com)
 * @date      : 2020-10-22 13:42:90
 *
 * @copyright : Copyright (c) 2020  胡恩荣
 *
 */

#ifndef __PWM_H
#define __PWM_H

#include <stdint.h>

/**
 * @brief  导出pwm到用户空间
 * @param  pwm_chip: pwm组
 * @return 成功: 0
 *         失败: -1
 */
int pwm_export(const uint16_t pwm_chip);

/**
 * @brief  使能pwm
 * @param  pwm_chip: pwm组
 * @return 成功: 0
 *         失败: -1
 */
int pwm_enable(const uint16_t pwm_chip);

/**
 * @brief  设置PWM周期(单位: ns)
 * @param  pwm_chip: 输入参数, 待设置的pwm组
 * @param  period  : 输入参数, 待设置的PWM周期值
 * @return 成功: 0
 *         失败: -1
 */
int pwm_set_period(const uint16_t pwm_chip, const uint32_t period);

/**
 * @brief  设置PWM占空比(设置高电平的时间, 单位: ns)
 * @param  pwm_chip  : 输入参数, 待设置的pwm组
 * @param  duty_cycle: 输入参数, 待设置的PWM占空比
 * @return 成功: 0
 *         失败: -1
 */
int pwm_set_duty_cycle(const uint16_t pwm_chip, const uint32_t duty_cycle);

/**
 * @brief  取消导出PWM到用户空间
 * @param  pwm_chip: 输入参数, 待取消导出的pwm组
 * @return 成功: 0
 *         失败: -1
 */
int pwm_unexport(const uint16_t pwm_chip);

#endif /* __PWM_H */
